package com.bit.dreamer;

import java.util.ArrayDeque;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupClickListener;
import android.widget.TextView;
import android.widget.Toast;

public class PsycholActivity extends Activity implements OnGroupClickListener, OnChildClickListener {
	ExpandableListView listView;
	String[] groups = {"애인과 길을 걸을때?", "낡은 목욕탕을 수선한다면?", "애인과 어떤 아이스크림을?"};
	String[][] childs = {{"      1. 애인의 어깨에 바로 손을 올린다.",
				   		  "      2. 애인의 손가락 중 하나만 잡는다.",
						  "      3. 손가락을 휘감으며 잡는다.",
						  "      4. 상대방이 하는대로 가만히 있는다." 	},
						{"      1. 목욕탕의 바닥과 벽 타일", "      2. 물을 데울 보일러", "      3. 좁고 작은 창문", "      4. 물을 담아야 하는 탕"},
						{"      1. 초코","      2. 바닐라","      3. 딸기","      4. 혼합"}};

	String str1 ="1. 애인의 어깨에 바로 손을 올린다는 것은 지배적인 성격을 뜻하며 누군가에게 이끌려 다니기보다 스스로 일을 하고 싶어하는 성격입니다.";
	String str2 ="2. 손가락을 하나만 잡을 경우 엄지손가락은 '성적인 의미', 검지 손가락은  '리드', 중지는 '음란', 약지는 '이상', 새끼 손가락은 '영감'을 뜻합니다.";
	String str3 ="3. 손가락을 휘감는 것은 응석받이 타입이며 외교적이고 적극적인 성격입니다. 행동을 할때에는 상대방의 동의를 구하고 행동하는 것을 좋아합니다.";
	String str4 ="4. 상대방이 하는 대로 가만 있는 것은 상대방에 의존하는 타입으로써 자신의 의지가 적고 애인 사이여도 친밀감이 생기기가 어렵습니다.";
	String str5 ="1. 목욕탕의 바닥, 벽 타일을 고치고 싶어한다면 음란한 것을 별로 좋아하지 않으며, 흥미도 관심도 지식도 없는 편이라 성적인 대화에서 큰 흥미를 보이지 않습니다.";
	String str6 ="2. 보일러를 선택한 사람은 음란한 것을 매우 좋아하는 타입 입니다. 지식, 교양, 명성을 갖추고 겉보기에는 점잖은 사람으로 보이지만 마음속에는 성적인 관심과 욕망으로 꿇고 있으며 성적인 것에 많은 관심을 보이고 있습니다. ";
	String str7 ="3. 좁고 작은 창문을 선택한 사람은 음란함의 정도가 비교적 높은 편입니다. 사람들과 웃으며 성적인 농담을 하기도 하지만 밝고 명랑한 타입으로 성적인 문제를 일으킬 행동을 하지는 않는 타입입니다.";
	String str8 ="4. 탕을 선택한 사람은 지극히 정상적인 타입으로써 성에 대한 욕망도 정상적이고 때와 장소에 따라 해당 문제를 적절하게 다룰 줄 아는 사람입니다.";
	String str9 ="1. 초코맛을 골랐다면 데이트가 귀찮다며 취소를 하기도 하는 변덕스러운 성격이지만 막상 데이트를 하게 되면 즐겁게 만날 수 있는 타입입니다.";
	String str10 ="2. 바닐라를 골랐다면 데이트 약속이 잡으며 좋은 장소를 고르는 등 매너가 좋지만 바람둥이의 가능성이 다분한 타입입니다.";
	String str11 ="3. 딸기맛을 골랐다면 본인만의 스타일을 고집하더라도 겉과 달리 따뜻하며 애교가 많은 타입입니다.";
	String str12 ="4. 혼합을 골랐다면 내성적인 성격이라 상대방이 먼저 데이트 신청을 해주길 바라지만 약속이 잡히고 만나게 되면 유머감각으로 상대방을 웃게 만들어 주는 타입입니다.";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_psychol);
		ExpandableListAdapter listAdapter = new MyExpandableListAdapter();

		listView = (ExpandableListView)findViewById(R.id.elist);
		listView.setAdapter(listAdapter);
		listView.setOnGroupClickListener(this);
		listView.setOnChildClickListener(this);
		
		
		Button btn = (Button) findViewById(R.id.btn_psy);
		btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent= new Intent(getApplicationContext(), MainMenuActivity.class);
				startActivity(intent);

			}
		});
		
	}

	// 원하는 데이터들과 원하는 동작을 설정
	public class MyExpandableListAdapter extends BaseExpandableListAdapter {

		// 주어진 그룹 위치와 하위 객체 위치에 해당하는 하위 객체 아이템을 반환
		public Object getChild(int groupPosition, int childPosition) {
			return childs[groupPosition][childPosition];
		}

		// 하위 객체의 아이디를 반환
		public long getChildId(int groupPosition, int childPosition) {
			return childPosition;
		}

		// 그룹에 속항 하위 객체의 아이템 수를 반환
		public int getChildrenCount(int groupPosition) {
			return childs[groupPosition].length;
		}

		// 그룹과 하위 객체 아이템을 보여줄 텍스트뷰를 생성
		public TextView getGenericView() {
			AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 64);

			TextView textView = new TextView(PsycholActivity.this);
			textView.setLayoutParams(lp);
			textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.RIGHT);
			textView.setPadding(36, 0, 0, 0);
			return textView;
		}

		// 텍스트뷰에 하위객체 아이템을 설정하고 반환
		public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
			TextView textView = getGenericView();
			textView.setTextSize(13);
			textView.setText(getChild(groupPosition, childPosition).toString());
			return textView;
		}

		// 주어진 그룹 위치에 해당하는 그룹 아이템을 반환
		public Object getGroup(int groupPosition) {
			return groups[groupPosition];
		}

		// 그룹의 개수를 반환
		public int getGroupCount() {
			return groups.length;
		}

		// 그룹의 아이디를 반환
		public long getGroupId(int groupPosition) {
			return groupPosition;
		}

		// 텍스트뷰에 그룹 아이템을 설정하고 반환
		public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
			TextView textView = getGenericView();
			textView.setText(getGroup(groupPosition).toString());
			// 그룹 왼쪽 아이콘 설정, Drawable 객체를 이용하여 설정
			textView.setTextSize(20);
			listView.setGroupIndicator(null);

			return textView;
		}

		// 하위 객체를 선택할 수 있는지 여부 반환
		public boolean isChildSelectable(int groupPosition, int childPosition) {
			return true;
		}

		// 그룹과 하위객체가 반환하는 아이디가 항상 일관된 아이디인지 여부 반환
		public boolean hasStableIds() {
			return true;
		}
	}

	// 그룹 객체를 클릭했을 때 호출되는 메소드
	public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
		//Toast.makeText(this, "Group : " + groups[groupPosition], Toast.LENGTH_SHORT).show();

		return false;
	}

	// 하위 객체를 클릭했을 때 호출되는 메소드
	public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
		
//		if(childs[groupPosition][childPosition].equals("      1. 애인의 어깨에 바로 손을 올린다.")){
//		
//			Toast.makeText(this, "해설 : " + str1, Toast.LENGTH_LONG).show();
//		//Toast.makeText(this, "Child : " + childs[groupPosition][childPosition], Toast.LENGTH_SHORT).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      2. 애인의 손가락 중 하나만 잡는다.")){ 
//			Toast.makeText(this, "해설 : " + str2, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      3. 손가락을 휘감으며 잡는다.")){
//			Toast.makeText(this, "해설 : " + str3, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      4. 상대방이 하는대로 가만히 있는다.")){
//			Toast.makeText(this, "해설 : " + str4, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      1. 목욕탕의 바닥과 벽 타일")){
//			Toast.makeText(this, "해설 : " + str5, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      2. 물을 데울 보일러")){
//			Toast.makeText(this, "해설 : " + str6, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      3. 좁고 작은 창문")){ 
//			Toast.makeText(this, "해설 : " + str7, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      4. 물을 담아야 하는 탕")){ 
//			Toast.makeText(this, "해설 : " + str8, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      1. 초코")){
//			Toast.makeText(this, "해설 : " + str9, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      2. 바닐라")){
//			Toast.makeText(this, "해설 : " + str10, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      3. 딸기")){
//			Toast.makeText(this, "해설 : " + str11, Toast.LENGTH_LONG).show();
//		}
//		else if(childs[groupPosition][childPosition].equals("      4. 혼합")){ 
//			Toast.makeText(this, "해설 : " + str12, Toast.LENGTH_LONG).show();
//		}
//		
//		else{Toast.makeText(getApplication(), "다시 선택해 주세요", Toast.LENGTH_SHORT).show(); }
//		return true;
//	}
		Intent intent = null; 

		if(childs[groupPosition][childPosition].equals("      1. 애인의 어깨에 바로 손을 올린다.")){
		
			intent = intentPSY(str1, 1);
			startActivity(intent);

		}
		else if(childs[groupPosition][childPosition].equals("      2. 애인의 손가락 중 하나만 잡는다.")){ 
			intent = intentPSY(str2, 2);
			startActivity(intent);
			
		}
		else if(childs[groupPosition][childPosition].equals("      3. 손가락을 휘감으며 잡는다.")){
			intent = intentPSY(str3, 3);
			startActivity(intent);			
		}
		else if(childs[groupPosition][childPosition].equals("      4. 상대방이 하는대로 가만히 있는다.")){
			intent = intentPSY(str4, 4);
			startActivity(intent);		
		}
		else if(childs[groupPosition][childPosition].equals("      1. 목욕탕의 바닥과 벽 타일")){
			intent = intentPSY(str5, 5);
			startActivity(intent);		
		}
		else if(childs[groupPosition][childPosition].equals("      2. 물을 데울 보일러")){
			intent = intentPSY(str6, 6);
			startActivity(intent);		
		}
		else if(childs[groupPosition][childPosition].equals("      3. 좁고 작은 창문")){ 
			intent = intentPSY(str7, 7);
			startActivity(intent);		
			}
		else if(childs[groupPosition][childPosition].equals("      4. 물을 담아야 하는 탕")){ 
			intent = intentPSY(str8, 8);
			startActivity(intent);		
			}
		else if(childs[groupPosition][childPosition].equals("      1. 초코")){
			intent = intentPSY(str9, 9);
			startActivity(intent);	
			}
		else if(childs[groupPosition][childPosition].equals("      2. 바닐라")){
			intent = intentPSY(str10, 10);
			startActivity(intent);	
		}
		else if(childs[groupPosition][childPosition].equals("      3. 딸기")){
			intent = intentPSY(str11, 11);
			startActivity(intent);	
		}
		else if(childs[groupPosition][childPosition].equals("      4. 혼합")){ 
			intent = intentPSY(str12, 12);
			startActivity(intent);	
		}
		
		else{Toast.makeText(getApplication(), "다시 선택해 주세요", Toast.LENGTH_SHORT).show(); }
		return true;
	}
	

	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		
		// Inflate the menu; this adds items to the action bar if it is present.
//		getMenuInflater().inflate(R.menu.lotto_main, menu);
//		return true;
		
		super.onCreateOptionsMenu(menu);
		
		MenuItem item = menu.add(0, 1, 0, "로그인");
		item.setIcon(R.drawable.ic_launcher);
		item.setAlphabeticShortcut('a'); // 키보드 a를 누르면 실행되게끔
		
		menu.add(0, 2, 0, "꿈목록");
		menu.add(0, 3, 0, "꿈등록");
		menu.add(0, 4, 0, "꿈지도");
		menu.add(0, 5, 0, "메뉴들");
		
	return true;
	}
	
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch ( item.getItemId()){
		case 1:
			Intent intent1= new Intent(getApplicationContext(), MainActivity.class);
			startActivity(intent1);
			
			Toast.makeText(this, "로그인 화면 가기", Toast.LENGTH_SHORT).show();
			return true;

		case 2 :
			Intent intent2= new Intent(getApplicationContext(), MainMenuActivity.class);
			startActivity(intent2);
			Toast.makeText(this, "나의 꿈 목록 보기", Toast.LENGTH_SHORT).show();
			return true;

		case 3 :
			Intent intent3= new Intent(getApplicationContext(), DreaminsertActivity.class);
			startActivity(intent3);

			Toast.makeText(this, "나의 꿈 등록 하기", Toast.LENGTH_SHORT).show();
			return true;

		case 4 :
			Intent intent4= new Intent(getApplicationContext(), DreamMap.class);
			startActivity(intent4);

			Toast.makeText(this, "나의 꿈 지도 보기", Toast.LENGTH_SHORT).show();
			return true;

		case 5 :
			Intent intent5= new Intent(getApplicationContext(), com.bit.dreamer.SubMenu.class);
			startActivity(intent5);

			Toast.makeText(this, "다양한 메뉴들 보기", Toast.LENGTH_SHORT).show();
			return true;

		}
		return false;

	}
	
	
	private Intent intentPSY(String title, int num) {
		Intent intent;
		intent = new Intent(getApplication(), PsyTestActivity.class);
		intent.putExtra("str", title);
		intent.putExtra("num", num);
		return intent;
	}

	
	
	
	
}
